using System;
using System.Collections.Generic;
using TestClassesForConcepts;
using TestClassesForConcepts.Sample1;

concept C1[T] {}

concept C2[T, S, U] 
{
    type A1;
    type A2 == B;
}

concept C3[T, S, U, V] 
{
    type A1 <: B;
    type A2 == U;
    type A3 <: Sample1.C<MyS>;
    type B1 == MyS;
    type B2 <: A1;
    type B3 == B<A2, C<B2>>;
    
    require S <: Sample1.A<C<B2>, V>;
}